package com.facade.documento;

import java.io.Serializable;
import java.util.Iterator;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.comun.filtro.FiltroLista;
import com.modelo.dao.documento.IDocumentoDAO;
import com.modelo.entity.Documento;

/**
 * Clase Servicio encargada de realizar las distintas operaciones con
 * documentos.
 * 
 * @author David
 * 
 */
@Service
public class GestionDocumento implements IGestionDocumento, Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Autowired
	private IDocumentoDAO documentoDAO;

	@Override
	@Transactional
	public void actualizar(Documento documento) {
		documentoDAO.update(documento);
	}

	@Override
	@Transactional
	public void crear(Documento documento) {
		documentoDAO.save(documento);
	}

	@Transactional
	@Override
	public void delete(List<Documento> docsEliminar) {
		for (Iterator<Documento> it = docsEliminar.iterator(); it.hasNext();) {
			Documento doc = it.next();
			documentoDAO.delete(doc);
		}
	}

	@Override
	public List<Documento> findByListId(List<Integer> listaIds) {
		return documentoDAO.findByListId(Documento.class, listaIds);
	}

	@Override
	public List<Documento> getDocumentosActivos(FiltroLista filtro) {

		return documentoDAO.getDocumentosActivos(filtro);
	}

	@Override
	public List<Documento> getDocumentosActivosAExcepcion(List<Documento> listaDoc) {

		return documentoDAO.getDocumentosActivosAExcepcion(listaDoc);
	}

	@Override
	public int getTotal() {
		return documentoDAO.getTotal();
	}

	/**
	 * @param documentoDAO
	 */
	public void setDocumentoDAO(IDocumentoDAO documentoDAO) {
		this.documentoDAO = documentoDAO;
	}
}
